home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Freeware / PerfectPaint / rexx / box / ZoomBlur.rx < prev   
Encoding:
Text File  |  2002-03-13  |  2.1 KB  |  139 lines

  1. /*     arexx Script 
  2.     Zoom Blur
  3. */
  4.  
  5.     call addlib("rexxmathlib.library", 5, -30, 0)
  6.  
  7.     options results
  8.     parse ARG Port x1 y1 x2 y2 b
  9.  
  10.     ADDRESS COMMAND
  11.     Alias=0
  12.     Opacity=85
  13.     Amplitude=5
  14.     IF EXISTS('PerfectPaint:Prefs/Rexx_Prefs/ZoomBlur') THEN DO
  15.         IF OPEN('lfile','PerfectPaint:Prefs/Rexx_Prefs/ZoomBlur', "R") then DO
  16.             Amplitude= READLN('lfile')
  17.             Opacity= READLN('lfile')
  18.             Alias= READLN('lfile')
  19.             CALL CLOSE('lfile')
  20.         END
  21.     END
  22.     
  23.     ADDRESS value Port
  24.  
  25.     pp_GetDepth
  26.     D=result
  27.     IF D<24 then DO
  28.         pp_Warn 'This*script*is*only|for*24bits*Picture.'    
  29.         pp_PermitRefresh
  30.         Exit
  31.     END
  32.  
  33.     pp_DialogInit 250 95 "*Zoom*Blur*" 3
  34.         pp_Integer 0 140 5 50 16 "Amplitude*(2-16)" 1 Amplitude
  35.         pp_Integer 1 140 25 50 16 "Opacity*(0-100)" 1 Opacity
  36.         pp_Cycle   2 140 45 50 16 "Antialiasing" 1 "None|Good" Alias
  37.     pp_Dialog
  38.     rc=result
  39.     IF rc=0 then DO
  40.         EXIT
  41.     END
  42.  
  43.     pp_GetDialog 0
  44.     Amplitude=result
  45.  
  46.     pp_GetDialog 1
  47.     Opacity=result
  48.  
  49.     pp_GetDialog 2
  50.     Alias=result
  51.  
  52.     IF Alias=1 then DO
  53.         pp_AliasOn
  54.     END
  55.  
  56.   CALL SavePrefs('ZoomBlur',Amplitude,Opacity,Alias)
  57.     ADDRESS value Port
  58.     pp_AvoidRefresh
  59.     pp_EffectOff
  60.  
  61.     pp_StencilStat
  62.     Stencil=result
  63.  
  64.     pp_PicttoSpare
  65.     pp_SpareOnOff    
  66.  
  67.     if Stencil=1 then DO
  68.         pp_StencilOff
  69.     END
  70.  
  71.     W=x2-x1+1
  72.     H=y2-y1+1
  73.  
  74.     Mix=50
  75.     Dec=1
  76.     pp_BrushOpacity 50
  77.  
  78.  
  79.     pp_ProgressText 'ZoomBlur'    
  80.     j=1
  81.     do i=1 to Amplitude
  82.         pp_Progress i Amplitude+1
  83.         pp_PickBrush x1 y1 W H 1
  84.         pp_GetWidthB
  85.         Wb=result
  86.         pp_GetHeightB
  87.         Hb=result
  88.         Sw=trunc(Wb+j+0.5,3)
  89.         Sh=trunc(Hb+j+0.5,3)
  90.          pp_ScaleBrush Sw Sh
  91.         pp_BrushOpacity Mix
  92.          pp_plot x1+W/2 y1+H/2
  93.        j=j+1
  94.         Mix=Mix-Dec
  95.     END
  96.  
  97.     IF Stencil=1 then DO
  98.         pp_StencilOn
  99.     END
  100.  
  101.     pp_FreeBrush
  102.  
  103.     pp_SpareOnOff
  104.     pp_ComposeReqOff
  105.     pp_UpdateUndoBox x1 y1 x2 y2    
  106.     pp_EffectOn
  107.     pp_Spare
  108.     pp_Compose 0 Opacity 0
  109.     pp_Boxf x1 y1 x2 y2
  110.     pp_Progressclr
  111.     pp_Compose 0 100 0
  112.     pp_PermitRefresh
  113.     pp_BrushOpacity 100
  114.     pp_EffectOff
  115.     pp_ComposeReqOn
  116.  
  117. EXIT
  118.  
  119. SavePrefs: PROCEDURE
  120.     
  121.     Prefname='PerfectPaint:Prefs/Rexx_Prefs/'||ARG(1)
  122.     say prefname
  123.  
  124.     if EXISTS(Prefname) THEN DO
  125.         ADDRESS COMMAND
  126.         'delete >nil: '||Prefname
  127.     END
  128.  
  129.     IF OPEN('pfile',PrefName,'W') THEN DO
  130.  
  131.     do i=2 to ARG()
  132.         CALL WRITELN('pfile',ARG(i))
  133.     end
  134.  
  135.     CALL CLOSE('pfile')
  136.  
  137. RETURN
  138.  
  139.